Traditionally, tasks to be performed by a robot are programmed by roboticists and are meant to be executed in controlled (caged) environments. More recently, “learning by demonstration” methods have been developed. Learning by demonstration is an important paradigm for teaching robots to carry out tasks. In this paradigm, a robot is taught not by explicit programming but rather by being guided through the task by a human, or alternatively by watching a human perform the task.
Examples of tasks a robot can be taught by demonstration include sorting, kitting and packaging. In sorting tasks, objects that are different from each other are separated based on their features. In kitting tasks, different objects are grouped together as a single unit. In contrast to sorting tasks, kitting tasks do not require separating different objects from each other while organizing them. In packaging tasks, a set of objects are placed at specific locations in a given container.
Many task learning systems (e.g., program synthesis) require a set of examples. In case of robotics domain, this reduces to a human operator specifying the exact trajectories that are to be carried out by the robot for a particular workspace arrangement. This set of example tasks is accomplished via teleoperation and/or direct manipulation of the robot. Once these trajectories are learned, the robot essentially mimics the human operator's demonstrations after sufficiently generalizing them.